package red.social;

import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class TablonPerfilGrupo extends Activity implements OnClickListener{
	private TextView nombreGrupoTextView, mensajitoMiembros;
	private Bundle parametros;
	private int idUsuarioLoggeado, idGrupo;
	private String nombreGrupo;
	private List<TablonComentarios> listaComentarios;
	private ListView lv;
	private EditText comentarioIntroducido;

	private String ip;
	private String SERVLET_URL;
	private String datos, sitio;
	
	/* (non-Javadoc)
	 * @see android.app.Activity#onCreate(android.os.Bundle)
	 */
	@Override
	protected void onCreate(Bundle savedInstanceState) {	
		super.onCreate(savedInstanceState);
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.tablongrupo);

		ip = getResources().getString(R.string.ip);
		SERVLET_URL = "http://"+ip+":8080/Modulo10-war/GruposServlet";
		
		nombreGrupoTextView = (TextView) this.findViewById(R.id.textViewNombreGrupoPerfilTablon);
		mensajitoMiembros = (TextView) this.findViewById(R.id.textViewComentariosPerfilGrupo);
		comentarioIntroducido = (EditText) this.findViewById(R.id.editTextComentarioGrupoPerfil);
		lv = (ListView) this.findViewById(R.id.listViewComentariosGrupo);
		Button postear = (Button) this.findViewById(R.id.buttonPostearComentarioGrupo);
		
		// asignamos listener
		postear.setOnClickListener(this);
		
		// recuperamos par�mentros
		parametros = getIntent().getExtras();

		if (parametros.isEmpty()) {
			Toast.makeText(this, "No se han recuperado par�metros",Toast.LENGTH_LONG).show();
		} else {
			this.idUsuarioLoggeado = parametros.getInt("idUsuario");
			this.idGrupo = parametros.getInt("idGrupo");
			this.nombreGrupo = parametros.getString("nombreGrupo");

			// rellenamos el textView
			if (this.nombreGrupo != null) {
				this.nombreGrupoTextView.setText(this.nombreGrupo);
			}

			if (this.idGrupo != 0) {
				// recuperamos los miembros del grupo por id de grupo
				datos = "?peticion=RECUPERACOMENTARIOSGRUPO&idGrupo="+idGrupo;

				sitio = SERVLET_URL + datos;
				
				try {
					URL ob = new URL(sitio);
					URLConnection conn = ob.openConnection();
					conn.setDoInput(true);
					conn.setDoOutput(true);
					InputStream in = conn.getInputStream();
					DataInputStream dos = new DataInputStream(in);

					int numComentarios = dos.readInt();
					this.listaComentarios = new ArrayList<TablonComentarios>();

					if (numComentarios != 0) { // si recuperamos alg�n comentario
						// cambiamos texto del textView mensajito del perfil del grupo
						this.mensajitoMiembros.setText("Lista de comentarios");
						
						for (int i = 0; i < numComentarios; i++) {
							int idComentario = dos.readInt();
							String comentario = dos.readUTF();
							String fecha = dos.readUTF();
							int idUsuarioHizoComentario = dos.readInt();
							String nombreApeUsuarioHizoComentario = dos.readUTF();
							
							TablonComentarios tabComent = 
								new TablonComentarios(Integer.valueOf(idComentario), comentario,fecha, 
								Integer.valueOf(idUsuarioHizoComentario),nombreApeUsuarioHizoComentario,this.idUsuarioLoggeado,
								this.idGrupo,this.nombreGrupo);
							this.listaComentarios.add(tabComent);
						}
						
						// rellenamos el array de String que va a mostrar los comentarios introducidos
						this.ordenar(); // ordenamos la lista de comentarios
						this.invertir(); 

						// rellenamos el listView		
						AdaptadorComentariosGrupo adaptador = new AdaptadorComentariosGrupo(this,
															this.listaComentarios);
						lv.setAdapter(adaptador);
						
					}
					
					// cerramos el flujo
					dos.close();

				} catch (IOException e) {
					Toast.makeText(this, "IOEx: " + e.getMessage(),Toast.LENGTH_LONG).show();
				}
			}
		}
	}

	@Override
	public void onClick(View v) {
		if (v.equals(this.findViewById(R.id.buttonPostearComentarioGrupo))){
			// recuperamos el comentario que se haya introducido en el textView
			String comentario = this.comentarioIntroducido.getText().toString();
			
			if(comentario==null || comentario.equals("")){
				//pte pensar si pongo algun mensajito
			}else{
				
				comentario = comentario.replace(" ", "XXXXX");
				datos = "?peticion=INTRODUCIRNUEVOCOMENTARIODEGRUPO&idGrupo="+this.idGrupo+"&comentario="+comentario+
						"&idUsuario="+this.idUsuarioLoggeado;

				sitio = SERVLET_URL + datos;
				
				try {
					// enviamos la informaci�n al Servlet
					URL ob = new URL(sitio);
					URLConnection conn = ob.openConnection();
					conn.setDoInput(true);
					conn.setDoOutput(true);
					InputStream in = conn.getInputStream();
					DataInputStream dos = new DataInputStream(in);
					// cerramos el flujo
					dos.close();

				} catch (IOException e) {
					Toast.makeText(this, "IOEx: " + e.getMessage(),Toast.LENGTH_LONG).show();
				}
				
				// recargamos el tablon para visualizar los comentarios recuperados
				this.finish();
				
				Intent irATablon = new Intent();
				irATablon.putExtra("idUsuario", this.idUsuarioLoggeado);
				irATablon.putExtra("idGrupo", this.idGrupo);
				irATablon.putExtra("nombreGrupo", this.nombreGrupo);
				irATablon.setClass(this, TablonPerfilGrupo.class);
				this.startActivity(irATablon);
			}
		}
	}
	
	// m�todos privados
	private void ordenar(){
		Collections.sort(this.listaComentarios);
	}
	
	private void invertir(){
		Collections.reverse(this.listaComentarios);
	}
}
